package com.xialuo.study.state;

import org.bsc.langgraph4j.state.AgentState;
import org.bsc.langgraph4j.state.Channel;
import org.bsc.langgraph4j.state.Channels;
import org.springframework.ai.chat.messages.Message;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 表示工作流状态，包括消息历史和下一步决策
 */
public class ReactState extends AgentState {
    public static final String MESSAGES = "messages";

    public static Map<String, Channel<?>> SCHEMA = Map.of(
            MESSAGES, Channels.base(ArrayList::new)
    );

    /**
     * 构造函数，初始化状态
     *
     * @param initData 初始数据
     */
    public ReactState(Map<String, Object> initData) {
        super(initData);
    }


    /**
     * 获取消息列表
     *
     * @return 消息列表
     */
    @SuppressWarnings("unchecked")
    public List<Message> getMessages() {
        return this
                .<List<Message>>value(MESSAGES)
                .orElseGet(ArrayList::new);
    }
}
